package jtapps.parking.server;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class BaseDades extends SQLiteOpenHelper {
	
	Context context;
	
	public BaseDades(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		this.context = context;
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		
		// data_entrada i data_sortida es guarden en milisegons (getTime())
		String createTableClient = "CREATE TABLE Client (id INTEGER PRIMARY KEY AUTOINCREMENT, mac TEXT, data_entrada TEXT, data_sortida TEXT, dades_bancaries TEXT, actiu INTEGER)";
		
		// duracio es en minuts
		String createTableTarifes = "CREATE TABLE Tarifes (id INTEGER PRIMARY KEY AUTOINCREMENT, duracio INTEGER, preu REAL)";
		
		db.execSQL(createTableClient);
		db.execSQL(createTableTarifes);
		
		ContentValues dades = new ContentValues();
		dades.put("duracio", 1);
		dades.put("preu", Float.valueOf(0.03f));
    	db.insert("Tarifes", null, dades);
    	
    	/*dades = new ContentValues();
		dades.put("duracio", 60);
		dades.put("preu", Float.valueOf(2.4f));
    	db.insert("Tarifes", null, dades);
    	
    	dades = new ContentValues();
		dades.put("duracio", 120);
		dades.put("preu", Float.valueOf(4.85f));
    	db.insert("Tarifes", null, dades);
    	
    	dades = new ContentValues();
		dades.put("duracio", 180);
		dades.put("preu", Float.valueOf(7.25f));
    	db.insert("Tarifes", null, dades);
    	
    	dades = new ContentValues();
		dades.put("duracio", 1440);
		dades.put("preu", Float.valueOf(18.3f));
    	db.insert("Tarifes", null, dades);*/
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		
	}
	
	public void registrarEntradaParking(SQLiteDatabase db, String mac, String data_entrada, String dades_bancaries)
	{
		ContentValues dades = new ContentValues();
		dades.put("mac", mac);
		dades.put("data_entrada", data_entrada);
		dades.put("dades_bancaries", dades_bancaries);
		dades.put("actiu", 1);
    	db.insert("Client", null, dades);
	}
	
	public void registrarSortidaParking(SQLiteDatabase db, String mac, String data_sortida)
	{
		String sql = "UPDATE Client SET actiu='0', data_sortida='" + data_sortida + "' WHERE mac='" + mac + "'";
 
		db.execSQL(sql);
	}
	
	public String getHoraEntrada(SQLiteDatabase db, String mac)
	{
		String result = "";
		
		String sql = "SELECT data_entrada FROM Client WHERE mac='" + mac + "'" + " AND actiu='1'";
		
		Cursor c = db.rawQuery(sql, null);
    	
    	c.moveToFirst();
        while (c.isAfterLast() == false)
        {
        	 if(c.getString(0) != null)
        		 result = c.getString(0);
        	 
        	 c.moveToNext();
        }
        c.close();
        
        return result;
	}
	
	// Retorna cert si el client entra al parking
	// Retorna fals si el client surt el parking
	public boolean entradaParking(SQLiteDatabase db, String mac)
	{
		boolean result = false;
		
		//String sql = "SELECT count(*) FROM Client WHERE mac='" + mac + "'" + " AND data_sortida is NULL";
		String sql = "SELECT count(*) FROM Client WHERE mac='" + mac + "'" + " AND actiu='1'";
		
		Cursor c = db.rawQuery(sql, null);
    	
    	c.moveToFirst();
        while (c.isAfterLast() == false)
        {
        	 if(c.getInt(0) == 0)
        		 result = true;
        	 
        	 c.moveToNext();
        }
        c.close();
		
		return result;
		
	}
	
}
